/*  
 * @ Author:  蛋炒贩炒蛋
 * @ Date:  2021年8月11日15:27:54
 * @ Des:  统一请求封装
*/ 
import store from '@/store'
let baseUrl = store.state.baseUrl;
let timer = null;
// 请求配置项
// url:请求路径,字符串类型
// method:请求方式默认GET,字符串类型
// needToken:是否需要token 数值number类型 0不需要、1需要、2可要可不要 默认0,
// returnPath:"" 重新登录回跳路径 needToken值为1时有效, 不传则登录后默认进入首页
// header:{} 请求头对象类型
// data:{} 请求参数 对象类型 

// 请求配置项END

// 使用方式1

// 导入
// import http from "@/common/http";
//  http.apiRequest({
// 	url:'',
// 	method:"GET",
// 	needToken:1,
// 	data:{

// 	}
// }).then(res=>{

// }).catch(err=>{

// })

// 使用方式END

// 使用方式2

// 已导入原型

//  this.apiRequest({
// 	url:'',
// 	method:"GET",
// 	needToken:1,
// 	data:{

// 	}
// }).then(res=>{

// }).catch(err=>{

// })

// 使用方式END
const apiRequest = (configObj) => {
	// 获取当前页面路径法
	const nowTimer = new Date().getTime();
	// 设置默认参数
	let httpConfig = {
		url: baseUrl + configObj.url,
		method: configObj.method ? configObj.method : 'GET',
		needToken: configObj.needToken ? configObj.needToken : 0,
		returnPath: configObj.returnPath ? configObj.returnPath : "",
		header:configObj.header?{...configObj.header}:{'content-type': 'application/x-www-form-urlencoded;charset=UTF-8'},
		data: configObj.data ? {
			...configObj.data
		} : {},
	}
	if (process.env.NODE_ENV === "development") {
		// 开发环境H5跨域代理
		// #ifdef H5
		// baseUrl = "/api/"
		// #endif
	}
	return new Promise((resolve, reject) => {
		switch (httpConfig.needToken) {
			case 0:
				uni.request({
					url: httpConfig.url,
					method: httpConfig.method,
					data: {
						...httpConfig.data
					},
					header: {
						...httpConfig.header
					},
					success: (res) => {
						resolve(res)
					},
					fail: (err) => {
						reject(err)
					}
				})
				break;
			case 1:
				// 判断token
				if (uni.getStorageSync("KLD_Token") && uni.getStorageSync("KLD_ExpirationTime")) {
					uni.request({
						url: httpConfig.url + '?token=' + uni.getStorageSync("KLD_Token"),
						method: httpConfig.method,
						data: {
							...httpConfig.data
						},
						header: {
							...httpConfig.header
						},
						success: (res) => {
							resolve(res)
						},
						fail: (err) => {
							reject(err)
							// store.commit("logOut")
						}
					})
				} else {
					store.commit("logOut")
					reject("登录失效或未登录")
				}
				break;
			case 2:
				let url = "";
				// 可要可不要token
				if (uni.getStorageSync("KLD_Token") && uni.getStorageSync("KLD_ExpirationTime") &&
					nowTimer < uni.getStorageSync(
						"KLD_ExpirationTime")) {
					url = httpConfig.url + '?token=' + uni.getStorageSync("KLD_Token");
				} else {
					url = httpConfig.url;
				}
				uni.request({
					url: url,
					method: httpConfig.method,
					data: {
						...httpConfig.data
					},
					header: {
						...httpConfig.header
					},
					success: (res) => {
						resolve(res)
					},
					fail: (err) => {
						reject(err)
					}
				})
				break;
			default:
				break;
		}
	})
}
module.exports = {
	apiRequest: apiRequest,
}
